package com.company.AtomicOption;

/**
 * 作者  Administrator
 * 时间  2017/6/5 9:59
 * 文件  ThreadPoolsDemo
 * 描述  绑定当前线程一个对象
 * ThreadLocal在线程使用完毕后，我们应该手动调用remove方法，移除它内部的值，这样可以防止内存泄露
 * ThreadLocal是为每一个线程都提供了一份独有的变量，各个线程互不影响
 */
public class ThreadLocalDemo {
	private static ThreadLocal<String> threadLocal = new ThreadLocal<String>(){
		@Override
		protected String initialValue() {
			return "hello";
		}
	};
	static class MyRunnable implements Runnable{
		private int num;
		public MyRunnable(int num){
			this.num = num;
		}
		@Override
		public void run() {
			threadLocal.set(String.valueOf(num));//绑定当前线程
			System.out.println("threadLocalValue:"+threadLocal.get());
		}
	}

	public static void main(String[] args){
		new Thread(new MyRunnable(1)).start();
		new Thread(new MyRunnable(2)).start();
		new Thread(new MyRunnable(3)).start();
	}
}
